<template>
  <div class="index">
    <!-- 轮播图区域 -->
    <div class="index-banner">
      <el-carousel indicator-position="outside" height="240px" :autoplay="true" :interval="5000">
        <el-carousel-item v-for="item in 4" :key="item" class="carousel-item">
          <h3 class="carousel-title">轮播图 {{ item }}</h3>
        </el-carousel-item>
      </el-carousel>
    </div>

    <!-- 商品列表区域 -->
    <div class="index-content">
      <div class="index-short" v-for="item in clothesList" @click="handleClick(item.clothesId)">
        <div class="index-short-info">
          <!-- 商品图片（优化占位样式） -->
          <div class="index-short-img">
            <img src="https://picsum.photos/80/80" alt="商品图片" class="goods-img">
          </div>

          <!-- 商品文本信息 -->
          <div class="index-short-text">
            <h3 class="goods-name">{{ item.clothesName }}</h3>
            <p class="goods-desc">{{ item.description }}</p>
            <p class="goods-price">¥{{ item.price }}</p>
          </div>
        </div>
      </div>
      <el-pagination style="width: 100%;"  :total="length" layout="prev, pager" :page-size="6"   @current-change="handleCurrentChange" />
    </div>
 </div>
</template>

<script lang="ts" setup>
import { onBeforeMount, ref } from 'vue';
import axios from 'axios';
import { useRouter } from 'vue-router';

interface Clothes {
  clothesId: number;
  categoryId: number;
  clothesName: string;
  brand: string;
  color: string;
  price: number;
  deposit: number;
  description: string;
  status: number;
  createTime: Date;
}

const clothesList = ref<Clothes[]>([]);
const router = useRouter(); // 获取路由实例
let length = ref(0);
const pageNum = ref(1);
const handleClick = (id: number) => {
  // console.log(id); // 打印商品ID到控制台
  router.push({ name: 'ClothesInfo', params: { id: id } });
}



onBeforeMount(async () => {
  const response = await axios.get('/api/clothes/getClothesPageNum/'+pageNum.value);
  clothesList.value = response.data
  // console.log(clothesList.value);  // 打印响应数据到控制台
  let res= (await axios.get('/api/clothes/getClothesList'));
  length.value=res.data.length;
  // console.log(length.value); // 打印响应数据到控制台
});

async function handleCurrentChange(currentPage: number) {
  pageNum.value=currentPage;
  const response = await axios.get('/api/clothes/getClothesPageNum/'+pageNum.value);
  clothesList.value = response.data
}

</script>

<style scoped>
/* 全局基础样式重置（避免默认边距影响） */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

.index {
  padding: 20px 0;
  background-color: #f8f9fa;
  /* 页面背景色，提升层次感 */
}

/* 轮播图样式优化 */
.index-banner {
  width: 90%;
  margin: 0 auto 30px;
  /* 增加底部间距，与商品区分离 */
  border-radius: 8px;
  /* 圆角优化 */
  overflow: hidden;
  /* 隐藏圆角外的内容 */
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  /* 轻微阴影，提升立体感 */
}

.carousel-item {
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: #e8f4f8;
  /* 统一轮播图背景色，更协调 */
}

.carousel-title {
  font-size: 1.5rem;
  color: #2d3748;
  font-weight: 600;
  opacity: 0.85;
}

/* 修复Element UI轮播图默认样式 */
.el-carousel__item h3 {
  line-height: normal;
  /* 取消默认高行高，改为居中对齐 */
}

.el-carousel__indicator--outside {
  margin-top: 16px !important;
  /* 调整指示器位置 */
}

.el-carousel__indicator.is-active button {
  background-color: #4299e1 !important;
  /* 激活态指示器颜色，更醒目 */
}

/* 商品列表容器样式 */
.index-content {
  width: 90%;
  margin: 0 auto;
  display: flex;
  flex-wrap: wrap;
  gap: 20px;
  /* 替代margin，间距更均匀 */
  padding: 20px;
  background-color: #fff;
  border-radius: 8px;
  box-shadow: 0 2px 12px rgba(0, 0, 0, 0.05);
}

/* 商品卡片样式 */
.index-short {
  flex: 1 1 calc(33.333% - 20px);
  /* 弹性布局，支持自适应 */
  min-width: 240px;
  /* 最小宽度，避免过窄 */
  background-color: #fff;
  border: 1px solid #e5e7eb;
  /* 浅灰色边框，更柔和 */
  border-radius: 8px;
  overflow: hidden;
  transition: all 0.3s ease;
  /* 过渡动画，提升交互体验 */
}

/* 卡片hover效果 */
.index-short:hover {
  transform: translateY(-3px);
  /* 轻微上浮 */
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
  /* 增强阴影 */
  border-color: #4299e1;
  /* 边框变色，突出选中态 */
}

/* 商品卡片内部布局 */
.index-short-info {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 16px;
}

/* 商品图片容器 */
.index-short-img {
  width: 80px;
  height: 80px;
  border-radius: 6px;
  overflow: hidden;
  background-color: #f5f5f5;
  /* 图片占位背景 */
  flex-shrink: 0;
  /* 避免图片容器被挤压 */
}

.goods-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  /* 图片自适应，不拉伸 */
}

/* 商品文本样式优化 */
.index-short-text {
  flex: 1;
  /* 文本区域占满剩余空间 */
  width: 100%;
  white-space: normal;
  word-wrap: break-word;
  word-break: break-all;
  line-height: 1.6;
  /* 优化行高，提升可读性 */
}

.goods-name {
  font-size: 1.1rem;
  font-weight: 600;
  color: #2d3748;
  margin-bottom: 6px;
  display: -webkit-box;
  -webkit-line-clamp: 1;
  /* 最多显示1行，超出省略（可调整） */
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.goods-desc {
  font-size: 0.9rem;
  color: #718096;
  margin-bottom: 8px;
  display: -webkit-box;
  -webkit-line-clamp: 1;
  /* 最多显示1行，超出省略 */
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.goods-price {
  font-size: 1rem;
  font-weight: 600;
  color: #e53e3e;
  /* 价格红色，突出显示 */
}

/* 响应式适配：平板（768px以下） */
@media (max-width: 768px) {
  .index-short {
    flex: 1 1 calc(50% - 15px);
    /* 两列布局 */
    min-width: 200px;
  }

  .index-content {
    width: 95%;
    padding: 15px;
    gap: 15px;
  }

  .index-banner {
    width: 95%;
    margin-bottom: 20px;
  }

  .carousel-title {
    font-size: 1.25rem;
  }
}

/* 响应式适配：手机（480px以下） */
@media (max-width: 480px) {
  .index-short {
    flex: 1 1 100%;
    /* 单列布局 */
    min-width: unset;
  }

  .index-short-info {
    padding: 12px;
    gap: 10px;
  }

  .index-short-img {
    width: 60px;
    height: 60px;
  }

  .goods-name {
    font-size: 1rem;
  }

  .goods-desc {
    font-size: 0.85rem;
  }
}
</style>